package br.com.advocacia.util;

import java.io.IOException;
import java.io.Serializable;
import java.util.Locale;
import java.util.ResourceBundle;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import org.primefaces.context.RequestContext;


public class FacesUtil implements Serializable {

	private static final long serialVersionUID = 1L;
	Locale idioma;
	ResourceBundle rb = null;

	public HttpSession getSession() {
		HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
		return session;
	}

	public Locale recuperarLocale() {
		idioma = FacesContext.getCurrentInstance().getViewRoot().getLocale();
		return idioma; 
	}

	public ResourceBundle getResourceBundle() {

		if (recuperarLocale() != null) {
			if (recuperarLocale().getLanguage().equalsIgnoreCase("pt")) {
				//TODO Voltar quando popular todos properties 
				rb =  ResourceBundle.getBundle("mensagens.mensagens");
			} else if (recuperarLocale().getLanguage().equalsIgnoreCase("en")) {
				rb =  ResourceBundle.getBundle("mensagens.mensagens_en");
			} else if (recuperarLocale().getLanguage().equalsIgnoreCase("es")) {
				rb =  ResourceBundle.getBundle("mensagens.mensagens_it");
			}
			System.out.println(rb.getString("botao_editar"));
		}
		return rb;
	}

	public void setarLocaleTodasPaginas() {
		Locale locale = (Locale) getSession().getAttribute("locale");
		FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
	}

	public Locale getIdioma() {
		return idioma;
	}

	public void setIdioma(Locale idioma) {
		this.idioma = idioma;
	}

	public ResourceBundle getRb() {
		return rb;
	}

	public void setRb(ResourceBundle rb) {
		this.rb = rb;
	}

	public static String obterParametro(String parametro) {
		try {
			return JSFMensagem.parametro(parametro);
		} catch (Exception e) {
			return parametro;
		}
	}

	public static void adicionarMensagem(String codigoMensagem) {
		FacesContext.getCurrentInstance().addMessage("", new  FacesMessage(FacesMessage.SEVERITY_INFO, codigoMensagem.trim() ,""));
	}

	public static void adicionarMensagemErro(String codigoMensagem) {
		FacesContext.getCurrentInstance().addMessage("", new  FacesMessage(FacesMessage.SEVERITY_ERROR, codigoMensagem.trim() ,""));
	}

	public static void adicionarMensagemValidacao(String codigoMensagem) {
		FacesContext.getCurrentInstance().addMessage("", new  FacesMessage(FacesMessage.SEVERITY_WARN, codigoMensagem.trim() ,""));
	}

	public static void redirecionarPagina(String paginaDestino) {
		try {
			FacesContext.getCurrentInstance().getExternalContext().redirect(paginaDestino);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void abrirModal(String nomeModal) {
		RequestContext.getCurrentInstance().execute(""+nomeModal+".show()");
	}

	public void fecharModal(String nomeModal) {
		RequestContext.getCurrentInstance().execute(""+nomeModal+".hide()");
	}
}
